#include <bits/stdc++.h>
using namespace std;
const int N=505;
int n,a[N];
bool cmp(int a,int b){
    return a>b;
}
vector<pair<int,int> > res;
bool vis[N];
int main(void){
    scanf("%d",&n);
    int all=0;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        all+=a[i];
    }
    if(all<n-1+n-1){
        printf("NO\n");
        return 0;
    }
    int cnt=0;
    int t=0;
    vector<int> list;
    int head=-1,tail=-1;
    for(int i=1;i<=n;i++){
        //printf("%d\n",a[i]);
        if(a[i]>=2){
            a[i]-=2;
            cnt++;
            vis[i]=true;
            list.push_back(i);
        }else if(a[i]==1 && t<2){
            a[i]--;
            if(t==0){
                head=i;
                t=1;
                vis[i]=true;
            }else{
                tail=i;
                vis[i]=true;
                t=2;
            }
        }
        if(cnt==n-2){
            break;
        }
    }
    if(head==-1){
        for(int i=1;i<=n;i++){
            if(!vis[i]){
                head=i;
                vis[i]=true;
                break;
            }
        }
    }
    if(tail==-1){
        for(int i=1;i<=n;i++){
            if(!vis[i]){
                tail=i;
                vis[i]=true;
                break;
            }
        }
    }
    int l=list.size();
    //printf("%d %d %d\n",l,head,tail);
    res.push_back(make_pair(head,list[0]));
    res.push_back(make_pair(list[l-1],tail));
    for(int i=0;i<l-1;i++){
        res.push_back(make_pair(list[i],list[i+1]));
    }
    for(int i=1;i<=n;i++){
        if(vis[i]){
            continue;
        }
        if(a[i]!=1){
            continue;
        }
        for(int j=0;j<l;j++){
            if(a[list[j]]>0){
                res.push_back(make_pair(list[j],i));
                a[list[j]]--;
                a[i]--;
                break;
            }
        }
    }
    int g=res.size();
    printf("YES %d\n",l+1);
    printf("%d\n",g);
    for(int i=0;i<g;i++){
        printf("%d %d\n",res[i].first,res[i].second);
    }
    return 0;
}